package com.java.demo.controller;

import com.java.demo.entity.User;
import com.java.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

@Controller
public class UserController {
    //属性注入（使用最多）
    @Autowired//注入对象，更加简单从spring容器中读取对象
    private UserService userService;
    //优点：写法简单
    //缺点：1.没法实现final修饰的变量注入
    //     2.通用性问题，只适用于IoC容器，兼容性一般
    //     3.设计原则问题：容易违背单一设计原则（即一类实现一功能）

    public void hello (){
        System.out.println("UserController");
        this.userService.hello();
    }

//    @Autowired
//    private User user;
    //目前在component中，已经注入了两个User,Autowired查完类型，无法确定唯一的bean，会继续根据user变量名，根据名称去查，
    //在spring中有名称为user1，getUserByName的对象，都不匹配那么就无法找到，这里把变量名改为二者之一即可。

    //resource不该名称也会报错。
    @Resource(name = "user1")
    private User user;

    public void hi(){
        System.out.println(user.getUsername());
    }

}
